<template>
  <div style="width: 80%">
    <div style="margin-bottom: 30px">编辑图书</div>
    <el-form  :model="form" style="width: 800px" :rules="rules" ref="ruleForm" label-width="100px">
      <el-form-item label="名称" prop="name">
        <el-input v-model="form.name" placeholder="请输入名称"></el-input>
      </el-form-item>
      <el-form-item label="描述" prop="description">
        <el-input v-model="form.description" placeholder="请输入描述"></el-input>
      </el-form-item>
      <el-form-item label="作者" prop="author">
        <el-input v-model="form.author" placeholder="请输入作者"></el-input>
      </el-form-item>
      <el-form-item label="出版社" prop="publisher">
        <el-input v-model="form.publisher" placeholder="请输入出版社"></el-input>
      </el-form-item>
      <el-form-item label="出版日期" prop="publishDate">
        <el-date-picker
            v-model="form.publishDate"
            type="date"
            value-format="yyyy-MM-dd"
            placeholder="选择出版日期">
        </el-date-picker>
      </el-form-item>
      <el-form-item label="分类" prop="category">
        <el-cascader
            :props="{ value: 'name',label:'name' }"
            v-model="form.categoryList"
            :options="options"
            ></el-cascader>
      </el-form-item>
      <el-form-item label="标准码" prop="bookNo">
        <el-input v-model="form.bookNo" placeholder="请输入标准码"></el-input>
      </el-form-item>

      <el-form-item label="积分" prop="score">
        <el-input-number v-model="form.score"  :min="10" :max="30" label="积分"></el-input-number>
      </el-form-item>
      <el-form-item label="数量" prop="nums">
        <el-input v-model="form.nums" placeholder="请输入数量"></el-input>
      </el-form-item>
      <el-form-item label="封面" prop="cover">
        <el-upload
            class="avatar-uploader"
            :action="'http://localhost:9090/api/book/file/upload?token=' + this.admin.token"
            :show-file-list="false"
            :on-success="handleCoverSuccess"
        >
          <img v-if="form.cover" :src="form.cover" class="avatar">
          <i v-else class="el-icon-plus avatar-uploader-icon"></i>
        </el-upload>
      </el-form-item>
      <div style="text-align: center; margin-top: 30px">
        <el-button type="primary" @click="update" size="medium">提交</el-button>
      </div>
    </el-form>
  </div>
</template>

<script>
import request from "@/utils/request";
import router from "@/router";
import Cookies from "js-cookie";

export default {
  name: "EditBook",
  data(){
    return{
      options:[],
      admin:Cookies.get('admin')?JSON.parse(Cookies.get('admin')):{},
      rules:{
        name: [
          { required: true, message: '请输入名称', trigger: 'blur'}
        ],
        score:[
          { required: true, message: '请选择积分', trigger: 'blur'}
        ],
        nums:[
          { required: true, message: '请输入数量', trigger: 'blur'}
        ]
      },
      form:{
        categoryList:[]
      }
    }
  },
  created() {
    this.initOptions()
    var id = this.$route.query.id;
    request.get("/book/"+id).then(res=>{
      if(res.code=='200'){
        this.form=res.data

        if(this.form.category){
          this.form.categoryList=this.form.category.split('>')
          console.log(this.form.categoryList)
        }
      }
    })
  },
  methods:{
    handleCoverSuccess(res){
      if (res.code === '200') {
        console.log(res.data)
        // this.$set(this.form, 'cover', res.data)
        this.form.cover = res.data
      }
    },
    initOptions(){
      request.get('/category/options').then(res=>{
        if(res.code=='200'){
          this.options=res.data
        }
      })
    },
    update(){
      this.$refs['ruleForm'].validate((valid) => {
        if(valid){
          request.put("/book/",this.form).then(res=>{
            if(res.code=='200'){
              this.$notify.success("修改成功");
              this.$router.push('/bookList')
            }else{
            }
          })
        }
      })
    }
  }
}
</script>

<style scoped>
.avatar-uploader .el-upload {
  border: 1px dashed #d9d9d9;
  border-radius: 6px;
  cursor: pointer;
  position: relative;
  overflow: hidden;
}
.avatar-uploader .el-upload:hover {
  border-color: #409EFF;
}
.avatar-uploader-icon {
  font-size: 28px;
  color: #8c939d;
  width: 178px;
  height: 178px;
  line-height: 178px;
  text-align: center;
}
.avatar {
  width: 178px;
  height: 178px;
  display: block;
}
</style>